﻿using System;
using MoroMoro.Samples.ToDoList.Application.Properties;
using MoroMoro.Samples.ToDoList.Persistence;
using MoroMoro.Samples.ToDoList.Persistence.Fake;
using MoroMoro.Samples.ToDoList.Persistence.NHibernate;

namespace MoroMoro.Samples.ToDoList.Application.DataStores
{
    /// <summary>
    /// データストアの選択を行います。
    /// </summary>
    internal sealed class DataStoreSelector
    {
        /// <summary>
        /// 指定した作業モードに対応するデータストアを取得します。
        /// </summary>
        /// <param name="mode">作業モード。</param>
        /// <returns> 指定した作業モードに対応するデータストア。</returns>
        public static IDataStore Get(WorkMode? mode = null)
        {
            mode = mode ?? Settings.Default.WorkMode;
            if (mode == WorkMode.Real)
            {
                return new Database(DBLocation.DirectoryPath, DBLocation.FileName);
            }
            else
            {
                return new Memory("");
            }
        }
    }
}
